﻿using Fuyao.Business.Entities.Models;
using Fuyao.Business.Logic.BC;
using Fuyao.Win.UI.Common;
using Fuyao.Win.UI.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Fuyao.Win.UI.Ventas
{
    public partial class frmListVentas : Form
    {
        BusinessLogic bc = new BusinessLogic();
        List<Venta> listVenta = new List<Venta>();

        public frmListVentas()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.ControlBox = false;
            this.WindowState = FormWindowState.Maximized;
            this.BringToFront();
        }

        private void setColumnasGrilla()
        {
            colNroFactura.DataPropertyName = "NroVentaDesc";
            ColNroFacturaEntero.DataPropertyName = "NroVenta";
            colCliente.DataPropertyName = "FiltroCliente";
            ColTipoComprobante.DataPropertyName = "TipoVentaDesc";
            colFechaCreacion.DataPropertyName = "FechaCreacion";
            colDescuento.DataPropertyName = "Descuento";
            colTotal.DataPropertyName = "MontoTotal";
            colEstado.DataPropertyName = "EstadoDesc";
        }

        public void cargarGrilla(bool _flag)
        {
            Venta beVenta = new Venta();
            beVenta.NroVenta = Convert.ToInt32(Utilitarios.IsNumericWithReturnValue(txtNroFactura.Text));
            beVenta.FechaCreacion = this.dtpFechaCreacion.Value;
            beVenta.FiltroFechaCreacionTO = this.dtpFechaCreacionTO.Value;
            beVenta.FiltroCliente = this.txtCliente.Text;

            if (rbtnPendiente.Checked)
                beVenta.Estado = Convert.ToInt16(Constantes.FACTURA_PENDIENTE);
            else if (rbtnAnulada.Checked)
                beVenta.Estado =  Convert.ToInt16(Constantes.FACTURA_ANULADA);
            else if (rbtnPagada.Checked)
                beVenta.Estado =  Convert.ToInt16(Constantes.FACTURA_PAGADA);
            listVenta = bc.getVentaByFilter(beVenta);
            if (listVenta.Count > 0) dgvFacturas.DataSource = listVenta;
            else
            {
                if (!_flag)
                {
                    MessageBox.Show("No se encontraron registros, verifique los filtros de búsqueda", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    dgvFacturas.DataSource = (listVenta = new List<Venta>());
                }
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            frmVentas frm = new frmVentas(Constantes.VENTA_FACTURA_ID);
            frm.ShowDialog();
            if (frm.action) cargarGrilla(false);
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            cargarGrilla(false);
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnMaximizar_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
        }

        private void btnRestaurar_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
        }

        private void frmListVentas_Load(object sender, EventArgs e)
        {
            Utilitarios.configurarGrilla(ref dgvFacturas, true);
            setColumnasGrilla();
            cargarGrilla(true);
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            if (dgvFacturas.CurrentRow != null && dgvFacturas.CurrentRow.DataBoundItem != null)
            {
                Venta oVenta = (Venta)dgvFacturas.CurrentRow.DataBoundItem;
                frmVentas frm = new frmVentas(Constantes.VENTA_FACTURA_ID);
                frm.VentaID = oVenta.VentaID;
                frm.ShowDialog();
                if (frm.action) cargarGrilla(false);
            }
        }

        private void dgvFacturas_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex>= 0 && dgvFacturas.CurrentRow != null && dgvFacturas.CurrentRow.DataBoundItem != null)
            {
                Venta oVenta = (Venta)dgvFacturas.CurrentRow.DataBoundItem;
                frmVentas frm = new frmVentas(Constantes.VENTA_FACTURA_ID);
                frm.VentaID = oVenta.VentaID;
                frm.ShowDialog();
            }
        }

    }
}
